//
// Created by 39442 on 2025/10/4.
//

#include "Semaphore.h"

//获取一个信号量资源
void Semaphore::wait() {
    std::unique_lock<std::mutex> lock(mtx_);
    //等待信号量有资源，没有资源的话，会阻塞当前线程
    cond_.wait(lock, [&]()->bool {return resLimit_ > 0;});
    resLimit_--;
}

//增加一个信号量资源
void Semaphore::post() {
    std::unique_lock<std::mutex> lock(mtx_);
    resLimit_++;
    cond_.notify_all();
}